 clc;clear
 %设置用于测试的原始数据x0,y0
 x0=[0 3 5 7 9 11 12 13 14 15];
 y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];
 %定义一个连续的x，
 x=0:0.1:15;
 
 %拉格朗日插值法计算y1
 y1=chazhi_lagrangechazhi(x0,y0,x); %调用前面编写的Lagrange插值函数
 
 %分段线性插值 y=interp1(x0,y0,x,'method')
    %'nearest' 最近项插值、'linear' 线性插值、'spline' 逐段 3 次样条插值、'cubic' 保凹凸性 3 次插值
 y2=interp1(x0,y0,x); %默认为线性插值
 y3=interp1(x0,y0,x,'spline');
 
 %三次样条插值
    % 其中 x0,y0 是已知数据点， x 是插值点， y 是插值点的函数值。
    % 对于三次样条插值，我们提倡使用函数 csape， csape 的返回值是 pp 形式，
    % 要求得插值点的函数值，必须调用函数 ppval
    
    % pp=csape(x0,y0)：使用默认的边界条件，即 Lagrange 边界条件。
    % pp=csape(x0,y0,conds)中的 conds 指定插值的边界条件，其值可为：
    % 'complete' 边界为一阶导数，即默认的边界条件
    % 'not-a-knot' 非扭结条件
    % 'periodic' 周期条件
    % 'second' 边界为二阶导数，二阶导数的值[0, 0]。
    % 'variational' 设置边界的二阶导数值为[0,0]。
 pp1=csape(x0,y0); y4=ppval(pp1,x);
 pp2=csape(x0,y0,'second'); y5=ppval(pp2,x);
 
 fprintf('比较一下不同插值方法和边界条件的结果:\n')
 fprintf('x y1 y2 y3 y4 y5\n')
 xianshi=[x',y1',y2',y3',y4',y5'];
 fprintf('%f\t%f\t%f\t%f\t%f\t%f\n',xianshi')
 subplot(2,2,1), plot(x0,y0,'+',x,y1), title('Lagrange')
 subplot(2,2,2), plot(x0,y0,'+',x,y2), title('Piecewise linear')
 subplot(2,2,3), plot(x0,y0,'+',x,y3), title('Spline1')
 subplot(2,2,4), plot(x0,y0,'+',x,y4), title('Spline2')
 
 %dyx0=ppval(fnder(pp1),x0(1)); %求x=0处的导数
 %ytemp=y3(131:151);
 %index=find(ytemp==min(ytemp));
 %xymin=[x(130+index),ytemp(index)];